export interface postDevicesMessageRequest {
  /**
   * 消息ID（可选）。由用户生成，建议使用UUID格式，必须在同一设备下唯一。
   * 如果在设备下消息ID重复，接口将返回错误。
   * 取值范围：长度不超过128，只允许字母、数字、下划线（_）、连接符（-）的组合。
   */
  message_id?: string;

  /**
   * 消息名称（可选）。表示消息的名称，可以为空。
   * 取值范围：长度不超过128，只允许中文、字母、数字、以及部分特殊字符（如：_?'#().,&%@!-等）。
   */
  name?: string;

  /**
   * 消息内容（必选）。消息的具体内容，可以是字符串或对象（JSON格式）。
   * 该字段是必须传递的，且根据实际情况决定是否使用字符串或对象来传递消息。
   */
  message: string | object;

  /**
   * 消息内容的编码格式（可选）。默认值为`none`。
   * 如果没有特殊需求，通常使用默认的`none`，表示消息不做编码。
   * 取值范围：
   * - `none`（无编码）
   * - `base64`（Base64编码）
   */
  encoding?: string;

  /**
   * 有效负载格式（可选）。在`encoding`为`none`时有效。
   * 默认值为`standard`，表示平台封装的标准格式。
   * 取值范围：
   * - `standard`（平台封装的标准格式）
   * - `raw`（直接将消息内容作为有效负载下发）
   */
  payload_format?: string;

  /**
   * 消息下行到设备的自定义Topic后缀（可选），仅适用于MQTT协议接入的设备。
   * 用户只能填写在租户产品界面配置的Topic，否则会校验失败。
   * 系统默认Topic格式为`$oc/devices/{device_id}/sys/messages/down`，用户可以在此基础上自定义Topic后缀。
   */
  topic?: string;

  /**
   * 消息下行到设备的完整Topic名称（可选）。用户可以自定义Topic，并直接透传给设备。
   * 设备需要提前订阅该Topic。
   * 此字段与`topic`字段不能同时填写。
   */
  topic_full_name?: string;

  /**
   * 下发消息在平台缓存的老化时间（可选），单位是分钟。默认值为1440分钟（24小时）。
   * 数值必须是5的倍数，指定为0时表示不缓存消息。
   * 取值范围：最大值为1440，且必须是5的倍数。
   */
  ttl?: number;
}

export interface MessageResultResponse {
  message_id: string;
  result: OperationResult;
}

export interface MessageResultResponseErr {
  error_code: string
  error_msg: string
}

interface OperationResult {
  status: string;
  created_time: string;
  finished_time: string | null;
}

export enum DeviceAction {
  /**
   * 车门上锁
   */
  LOCK_ON = "l:1",
  /**
   * 车门解锁
   */
  LOCK_OFF = "l:0",

  /**
   * 车熄火
   */
  IGNITION_OFF = "i:0",
  /**
   * 车点火
   */
  IGNITION_ON = "i:1",

  /**
   * 风扇关闭
   */
  FAN_OFF = "f:0",
  /**
   * 风扇低速
   */
  FAN_LOW = "f:1",
  /**
   * 风扇中速
   */
  FAN_MEDIUM = "f:2",
  /**
   * 风扇高速
   */
  FAN_HIGH = "f:3",

  /**
   * 开启蜂鸣器
   */
  BUZZER_ON = "b:1",
  /**
   * 关闭蜂鸣器
   */
  BUZZER_OFF = "b:0",

  /**
   * 打开大灯
   */
  HEADLIGHT_ON = "h:1",
  /**
   * 关闭大灯
   */
  HEADLIGHT_OFF = "h:0",

  /**
   * 打开尾灯
   */
  TAILLIGHT_ON = "t:1",
  /**
   * 关闭尾灯
   */
  TAILLIGHT_OFF = "t:0",

  /**
   * 打开后备箱
   */
  TRUNK_ON = "k:1", 
  /**
   * 关闭后备箱
   */
  TRUNK_OFF = "k:0"
}
